选择结构之 您所在的位置:网站首页 c语言switch case语句用法 选择结构之

选择结构之

2023-03-16 23:44| 来源: 网络整理| 查看: 265

switch语句基本语法格式程序执行原理:注意事项习题

基本语法格式

switch(表达式){case 常量1:语句1;break;case 常量2: 语句2;break;...default: 执行语句n;break;}

程序执行原理:

程序由上到下执行,首先执行小括号中的表达式,得出一个常量值,将这个常量值与每个case语句后面的常量值进行匹配。如果与某个case语句中的常量值匹配上了(即两个常量值相等),那么就会执行对应case语句后面的语句,执行完语句后遇到break语句从而跳出整个switch结构,这时候switch结构就会终止执行;如果表达式中的常量值与任何一个case语句后面常量值都匹配不上,那么程序就会执行default后面的执行语句。

【案例1】: 从键盘输入1-7之间的任意数字,分别输出对应的信息 1——星期一 2——星期二 3——星期三 4——星期四 5——星期五 6——星期六 7——星期日

import java.util.Scanner;public class SwitchDemo{public static void main(String []args){//判定星期的案例System.out.println("请输入1~7之间的任意一个数字:");Scanner sc = new Scanner(System.in);int weekDay = sc.nextInt();//从键盘获取用户输入switch(weekDay){case 1:System.out.println("星期一");break;case 2:System.out.println("星期二");break;case 3:System.out.println("星期三");break;case 4:System.out.println("星期四");break;case 5:System.out.println("星期五");break;case 6:System.out.println("星期六");break;case 7:System.out.println("星期日");break;default:System.out.println("输入错误,请输入一个1~7的数字!");} }}

运行结果示例 在这里插入图片描述在这里插入图片描述 在这里插入图片描述 【案例2】 与【案例1】做一个类似比较体会一下,顺便认识两个方法toUpperCase()将字符串全部转换为大写,toLowerCase()将字符串全部转换为小写

import java.util.Scanner;public class Exercise_Switch {public static void main(String[] args) {System.out.println("请输入表示星期的英文单词:");Scanner sc = new Scanner(System.in);String week = sc.next();/** 用户在输入表示星期的英文单词时,有输小写的,有输入大写的,有输入大小写混合的,为了统一* 调用toLowerCase()方法将输入的单词全部转换为小写从而好与case中的相匹配*/ week=week.toLowerCase();//把字符串中的字符全部改为小写switch (week) {case "monday":System.out.println("星期一");break;case "tuesday":System.out.println("星期二");break;case "wednesday":System.out.println("星期三");break;case "thursday":System.out.println("星期四");break;case "friday":System.out.println("星期五");break;case "saturday":System.out.println("星期六");break;case "sunday":System.out.println("星期日");break;default :System.out.println("单词输入错误!");}}}

运行结果 在这里插入图片描述

注意事项

注意事项1 switch语句中的表达式只能是byte、short、int、char、enum枚举、String类型的值,如果传入其他类型的值,程序会报错。 其中byet、short、int、char是在JDK1.6之前包括JDK1.6引入的,enum是JDK1.5引入的、String是JDK1.7引入的。

注意事项2 switch语句中可以省略break。如果省略掉所有的break,当表达式中的常量值与某个case语句中的常量值匹配到时,最终会从该case语句一直执行到最后一条语句。

【案例2】

import java.util.Scanner;public class SwitchDemo{public static void main(String []args){//判定星期的案例System.out.println("请输入1~7之间的任意一个数字:");Scanner sc = new Scanner(System.in);int weekDay = sc.nextInt();//从键盘获取用户输入switch(weekDay){case 1:System.out.println("星期一");case 2:System.out.println("星期二");case 3:System.out.println("星期三");case 4:System.out.println("星期四");case 5:System.out.println("星期五");case 6:System.out.println("星期六");case 7:System.out.println("星期日");default:System.out.println("输入错误,请输入一个1~7的数字!");} } }

运行结果示例 在这里插入图片描述 在这里插入图片描述 注:如果只是去掉某一个或者某几个break,程序也会遵循同样的原则,只有遇到break时才会跳出switch语句,否则就会一直执行到最后一条语句。

习题

【例题1】 下列语句执行后,z的值为?(选择一项)

int x=3,y=4,z=0;switch(x%y+2){case 0 : z=x*y;break;case 6 :z=x/y;break;case 12 :z=x-y;break;default :z=x*y-x;}

A:15 B:0 C:-2 D:9

解析:本题考查switch结构,x%y+2的值为5,没有匹配的case语句,故执行default语句, z=x∗y−x=3∗4−3=9z=x*y-x = 3*4-3=9z=x∗y−x=3∗4−3=9

【例题2】 下列语句序列执行后,r的值是?(选择一项)

char ch='8';int r=10;switch(ch+1){case '7' : r=r+3;case '8' :r=r+5;case '9' :r=r+6;break;default : r=r+8}

A:13 B:15 C:16 D:18

解析:本题考查switch结构,关键点在于switch后面表达式值的计算,字符char在与int类型的数据进行计算的时候会自动转换为int类型 表达式ch+1其实就是 ‘8’+1 = 56+1=57,后续的多个case中只有’9’的转换为int类型后的值为57能与之相匹配上,所以会执行r=r+6得出r=16 当想要知道char类型的数据例如:'9’转换成int类型的值为多少时可以使用代码测试

char ch = '9';System.out.println(ch+0);//最终的计算结果确实为57

【例题3】下列语句序列执行后,k 的值是? (选择一项)

int x=6,y=10,k=5;switch(x%y){case 0:k=x*y;case 6:k=x/y;case 12:k=x-y;default :k=x*y-x;}

A:60 B:5 C:0 D:54

解析:本题考查switch结构,x%y的值为6,执行case 6,k=6/10=0,没有结束语句,继续执行case12,k=x-y=-4,没有结束语句,继续执行default语句,k=x*y->x=60-6=54。故最终k的值为54,D选项正确。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有